/*
 * TestBloque.cpp
 *
 *  Created on: 28/10/2009
 *      Author: root
 */

#include <iostream>
#include "Bloque.h"
#include "Registro.h"
#include "../Externa/Clave.h"
#include "../Externa/Dato.h"
#include "Alumno.h"

using namespace std;


class TestBloque {

	Bloque* bloque;
	string bloqueSerializado;
	Alumno* alumno;
	Alumno* alumno2;
	Clave * clave;
	Clave * clave2;

public:

		void Setup () {
			clave= new Clave();

		alumno=new Alumno();
		alumno->setApellido("like");
		alumno->setDni("123");
		alumno->setNombre("ale");
		alumno->setPadron("85424");

		alumno2=new Alumno();
		alumno2->setApellido("arcia");
		alumno2->setDni("1234");
		alumno2->setNombre("benyi");
		alumno2->setPadron("85224");

		string dato1=alumno->serializar();
		string dato2=alumno2->serializar();

		clave = new Clave("DNI",alumno);
		clave2 = new Clave("DNI",alumno2);

		Registro registro(dato1,*clave);
		Registro registro2(dato2,*clave);

		bloque = new Bloque(1,100);
		bloque->getRegistros()->push_back(registro);
		bloque->getRegistros()->push_back(registro2);

	}


	void Terminar () {
		delete alumno;
		alumno = NULL;

		delete alumno2;
		alumno2 = NULL;

		delete clave;
		clave = NULL;

		delete clave2;
		clave2 = NULL;

		delete bloque;
		bloque = NULL;

		cout << "El test de BLoque se completo"<< endl;
	}

	void TestSerializar () {
		cout << " Test Serializar" << endl;
		bloqueSerializado= bloque->Serializar();
		cout << bloqueSerializado << endl;
	}


	void TestDesSerializar () {
		cout << "TEST DESSERIALIZAR"<<endl;
		Bloque* bloque2;
		bloque2 = new Bloque (2,bloque->getTamanio());
		bloque2->setEspacioLibre(bloque->getEspaciolibre());
		bloque2->desSerializar(bloqueSerializado);

		cout << "cant elementos: " << bloque2->getRegistros()->size() << endl;
		cout << "bloque2 serializado" << endl;
		cout << bloque2->Serializar() << endl;

		delete bloque2;
		bloque2 = NULL;

	}

	void Run() {

		Setup();
		TestSerializar();
		TestDesSerializar();
		Terminar();

	}


};
